package com.ddpt.permission.service;

import com.lh.center.common.base.session.SessionUser;
import com.lh.center.common.dto.LoginByPhoneDto;
import com.lh.center.permission.util.PhoneCodeUtil;

public interface LoginService<T extends SessionUser> {

    void signOut(String token);

    /**
     * 账号密码登陆
     * @param account   账号
     * @param password  密码
     * @param imgCode   图形验证码
     * @param codeId    图形验证码id
     */
    T loginByPassword(String account, String password, String imgCode, String codeId);

    /**
     * 账号密码登陆
     * @param account   账号
     * @param password  密码
     */
    T loginByPassword(String account, String password);


    /**
     * 手机+验证码登陆
     */
    T loginByPhone(LoginByPhoneDto dto);

    /**
     * 发送短信验证码
     * @param phone 手机号码
     */
    default boolean sendPhoneCode(String phone,String code){
        return PhoneCodeUtil.send(phone,code);
    }

    /**
     * 自动登陆（用户端）
     * @param merchantId    商户id
     * @param phone 手机号码
     * @param randomSecret  随机密码(设备码)
     */
    default T autoLogin(Long merchantId,String phone,String randomSecret){
        return null;
    }
}
